package dlc.persistencia;


import dlc.indexado.lectura.DefaultListener;

import dlc.indexado.lectura.Listener;
import java.util.LinkedList;

public class HiloGrabadorArchivos extends Thread {

    private LinkedList<Listener> listaListener;
    private boolean primeraVez;

    public HiloGrabadorArchivos() {
        listaListener = new LinkedList<Listener>();
        primeraVez = false;
    }
    /*
     * Agrega el default listener a la lista de listeners a procesar.
     * Si es la primera vez que se lo llama, se llama al metodo start() del
     * hiloGrabador
     */

    public boolean startServer(Listener defaultListener) {
        System.out.println("Documento listo para grabar: " + defaultListener.doc.getPath());
        listaListener.add(defaultListener);
        if (primeraVez == false) {
            primeraVez = true;
            this.start();
        }
        return true;
    }

    /**
     * Este metodo toma objetos defaultListener de la lista y graba su 
     * vocabulario, sus posteos y su documento en la database.
     */
    @Override
    public void run() {
        //TODO CAMBIAR FORMA DE IERAR LISTA. ??????
        while (!this.isInterrupted()) {
            if (listaListener.size() != 0) {
                Listener defListener = listaListener.getFirst();
                if (!defListener.getVocabulario().isEmpty()) {
                    try {
                        BaseDatos dao = new BaseDatos(2);
                        dao.grabarDocumento(defListener);
                    } catch (Exception ex) {
                        System.out.println("Error: "+ ex.toString());
                    }
                    System.out.println("Documento grabado: " + listaListener.getFirst().doc.getPath());
                    listaListener.removeFirst().doc.getPath();
                }
            } else {
                break;
            }
        }
    }
}